package main.java.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

/*
    元素的toString与equals方法中集合操作的影响
 */
public class CollectionDemo2 {
    public static void main(String[] args) {
        //创建有序的集合对象
        //Collection c1 = new ArrayList();
        //创建无序的集合对象
        Collection c1 = new HashSet();
        //向集合中添加元素
        c1.add(new Point(1, 2));
        c1.add(new Point(3, 4));
        c1.add(new Point(5, 6));
        c1.add(new Point(7, 8));
        c1.add(new Point(9, 0));
        c1.add(new Point(1, 2));
        // 输出集合中的元素
        // 集合重写了toString方法，返回的字符串格式:
        // [元素1.toString(), 元素2.toString(), 元素3.toString(), ...]
        System.out.println(c1);

        //创建一个新的集合对象
        // Point类没有重写equals方法
        Point p = new Point(1, 2);
        // 向集合中添加元素
        /*
            对于Set集合而言，重复的元素无法存入第二次
            需要元素妥善的重写equals方法
         */
        c1.add(p);
        // 输出集合中的元素
        System.out.println(c1);


        // 判断集合中是否包含给定的元素
        //创建一个新对象
        Point p2 = new Point(5, 6);
        // 判断集合中是否包含该元素
        boolean contains = c1.contains(p2);
        //输出判断的结果，true或者false
        System.out.println("是否包含给定的元素:"+contains);


        /*
           boolean remove(object o)
           从集合中删除给定元素，成功删除则返回true
           删除的也是与给定元素equals比较为true的元素,需要注意对于List这样可以存放重复
           元素的集合，删除的是靠前的第一个equals比较为true的元素，后面的不会被删除
         */
        c1.remove(p2);
        System.out.println(c1);
    }
}
